package persistence.rmi;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.ArrayList;

import persistence.Dictionnaire;
import persistence.Enseignant;
import persistence.Joueur;
import persistence.Message;
import persistence.Mot;
import persistence.Session;
import persistence.Utilisateur;

public interface IntegrationRemote extends Remote {
	public Message checkConnexionInfos(Utilisateur u) throws RemoteException;
	///CONNEXION
	public ArrayList<String> getLangues() throws RemoteException;
	public String checkConnexionInfos(String userParam) throws RemoteException;
	///JOUER
	//public Message sendLetter(char c) throws RemoteException;
	public ArrayList<Dictionnaire> getAllDictionnaires(String l) throws RemoteException;
	public ArrayList<Mot> getMots(Dictionnaire d) throws RemoteException;
	public Boolean saveSession(Session s) throws RemoteException;
	public String getIndice(Mot m) throws RemoteException;
	///CONSULTER SCORES
	//public ScoreStats getScores(Joueur j) throws RemoteException;
	///S'INSCRIRE
	public Utilisateur inscrire(Utilisateur u) throws RemoteException;
	///GESTION DU DICTIONNAIRE
	public ArrayList<Dictionnaire> getDictionnaires(Enseignant e) throws RemoteException; 
	public ArrayList<Dictionnaire> getDictionnaires() throws RemoteException;
	public Dictionnaire createDictionnaire(Dictionnaire d, Enseignant e) throws RemoteException;
	public Dictionnaire updateDictionnaire(Dictionnaire d, Enseignant e) throws RemoteException;
	public Boolean deleteDictionnaire(Dictionnaire d, Enseignant e) throws RemoteException;
	///GESTION DES JOUEURS
	public ArrayList<Joueur> getJoueurs(Enseignant e) throws RemoteException;
	public ArrayList<Joueur> searchJoueurs(Joueur j) throws RemoteException;
	public ArrayList<Joueur> searchJoueurs(Joueur j,Enseignant e) throws RemoteException;
	public Joueur createJoueur(Joueur j) throws RemoteException;
	public Joueur updateJoueur(Joueur j) throws RemoteException;
	public Boolean DeleteJoueur(Joueur j) throws RemoteException;
	public Boolean razScore(Joueur j) throws RemoteException;
	///SAUVEGARDER HISTORIQUE/SCORES
	//public void createHistorique(Historique h) throws RemoteException;
	public void saveScore(Session j) throws RemoteException;
	///GESTION UTILISATEURS
	public Enseignant createEnseignant(Enseignant e) throws RemoteException;
	///GESTION HISTORIQUES
	//public ArrayList<Historique> getHistoriques() throws RemoteException;
	///Gestion i18N
	//public I18N createI18N(I18N i) throws RemoteException;
	//public I18N updateI18N(I18N i) throws RemoteException;
	//public Boolean deleteI18N(I18N i) throws RemoteException;
}
